package com.lsht.system.mapper.siwei;

import com.lsht.system.domain.siwei.SiweiPoint;
import com.lsht.system.domain.vo.PointChildren;
import org.apache.ibatis.annotations.Param;

import java.util.HashMap;
import java.util.List;

/**
 * 点位管理Mapper接口
 *
 * @author zyc
 * @date 2024-08-14
 */
public interface SiweiPointMapper {
    /**
     * 新增点位管理
     *
     * @param siweiPoint 点位管理
     * @return 结果
     */
    public int genAdd(SiweiPoint siweiPoint);

    /**
     * 删除点位管理
     *
     * @param id 点位管理主键
     * @return 结果
     */
    public int genDeleteById(@Param("idList") List<String> idList);

    /**
     * 修改点位管理
     *
     * @param siweiPoint 点位管理
     * @return 结果
     */
    public int genUpdateById(SiweiPoint siweiPoint);

    /**
     * 查询点位管理
     *
     * @param id 点位管理主键
     * @return 点位管理
     */
    public List<SiweiPoint> genQueryList(SiweiPoint siweiPoint);

    /**
     * 根据id查询点位详情信息
     *
     * @param siweiPoint
     * @return
     */
    SiweiPoint genQueryById(SiweiPoint siweiPoint);

    /**
     * 根据id查询每个分组下的点位数据
     *
     * @param id
     * @return
     */
    List<PointChildren> getPointListByGroupId(String id);

    /**
     * 查询点位数量
     *
     * @return
     * @param siweiPoint
     */
    Integer getCountPointNum(SiweiPoint siweiPoint);

    Integer getNumByYesterday(@Param("beginTime") String beginTime, @Param("endTime") String endTime, @Param("deptId") Long deptId);

    /**
     * siweiPoint
     *
     * @param siweiPoint
     * @return
     */
    HashMap abnormalPointDetails(SiweiPoint siweiPoint);

    /**
     * 大屏按照所属区域分组展示异常点位的个数
     *
     * @param siweiPoint
     * @return
     */
    List<HashMap> abnormalPointByRegion(SiweiPoint siweiPoint);

    /**
     * 新增点位时修改设备状态为已使用
     *
     * @param deviceId
     * @param i
     */
    void updateDeviceStatus(@Param("deviceId") String deviceId, @Param("useStatus") Integer useStatus);

    /**
     * 根据点位id查询原绑定的设备id
     *
     * @param id
     * @return
     */
    String getOriginalDeviceId(String id);


    /**
     * 大屏按照年份进行点位状态为异常的个数 根据季度查询
     *
     * @param siweiPoint
     * @return
     */
    HashMap abnormalPointDetailsByQuarter(SiweiPoint siweiPoint);

    /**
     * 大屏按照年份进行点位状态为异常的个数 根据月度查询
     *
     * @param siweiPoint
     * @return
     */
    HashMap abnormalPointDetailsByMonth(SiweiPoint siweiPoint);

    /**
     * 查询点位数据
     * @return
     * @param objects
     * @param searchValue
     */
    List<SiweiPoint> getPointList(@Param("deptIdList") List<Long> deptIdList, @Param("searchValue") String searchValue);

    List<HashMap> abnormalPointByYear(@Param("detailsType") Integer detailsType, @Param("deptId") Long deptId);


    List<HashMap> abnormalPointByQuarter(@Param("detailsType") Integer detailsType, @Param("deptId") Long deptId);

    List<HashMap> abnormalPointByMonth(@Param("detailsType") Integer detailsType, @Param("deptId") Long deptId);

    /**
     * 根据id查询设备ID
     * @param idList
     * @return
     */
    List<String> getPointDeviceList(@Param("idList") List<String> idList);

    List<String> selectPointShowHidden(SiweiPoint siweiPoint);

    Integer getLastYearCount(SiweiPoint siweiPoint);

    Integer getThisYearCount(SiweiPoint siweiPoint);

    Integer getLastJdCount(SiweiPoint siweiPoint);

    Integer getThisJdCount(SiweiPoint siweiPoint);

    Integer getLastMonthCount(SiweiPoint siweiPoint);

    Integer getThisMonthCount(SiweiPoint siweiPoint);
}
